package org.example.lcp;

import java.util.Arrays;

/**
 * @Description: TODO
 * @Author wyatt
 * @Data 2024/08/01 10:15
 */
public class Lcp40 {

    public static void main(String[] args) {
        System.out.println(new Lcp40().maxmiumScore(new int[]{1, 2, 8, 9}, 3));
    }

    public int maxmiumScore(int[] cards, int cnt) {
        Arrays.sort(cards);
        //先加cnt个数字，如果是偶数，直接返回。
        //如果是奇数，
        //  找出最小的一个奇数或者偶数的
        //  从剩余的卡片中，找出奇偶性相反的数字， 找不到返回0
        int n = cards.length;
        int s = 0;
        for(int i=n-cnt;i<n;i++){
            s+=cards[i];
        }
        if(s % 2 == 0){
            return s;
        }
        int x = cards[n-cnt];
        int ans = replaceNum(cards, cnt , s, x);
        //再找到另外一个奇偶数相反的替换比大小
        for(int i=n-cnt+1;i<n;i++){
            if(x%2 != cards[i]%2){
                ans = Math.max(ans, replaceNum(cards, cnt, s, cards[i]));
            }
        }
        return ans;
    }

    private int replaceNum(int[] cards, int cnt, int s, int x) {
        for(int i=cards.length-cnt-1;i>=0;i--){
            if(x%2 != cards[i]%2){
                return s-x+cards[i];
            }
        }
        return 0;
    }
}
